package jwj8508;

public class J16_OOP2 {

	// 메서드method
	// 클래스의 객체가 할 수 있는 행위를 정의
	// 메서드에는 선언부와 몸체가 있음

	// 접근제한자 반환유형 메서드이름 (인수목록) {
	// 메서드 몸체
	// }
	// 메서드 선언부는 반환유형, 메서드이름, 인수목록
	// 메서드 선언부를 메서드 서명method signature이라고도 한다

	// 특별한 메서드인 main은 프로그램의 진입점을 제공
	// 일반적으로 프로그램은 수 많은 클래스로 구성
	// 그 중 주가 되는 메서드가 하나 있어야 하는데
	// 그것이 바로 main 메서드 

	public static void main(String[] args) {
		Students w = new Students();
		w.kor = 97;
		w.eng = 78;
		w.mat = 99;
		w.showSungJuk();

	}

}

// 학생 클래스
class Students {
	int stdno;
	int kor;
	int eng;
	int mat;

	// 총점 구하기	
	int computeTotal() {
		return kor + eng + mat;
	}

	// 평균 구하기
	float computeAvg() {
		return this.computeTotal() / 3F;
	}

	// 학점 구하기
	char computeGrade() {
		switch ((int) this.computeAvg() / 10) {
		case 10:
		case 9:
			return '수';
		case 8:
			return '우';
		case 7:
			return '미';
		case 6:
			return '양';
		default:
			return '가';
		}		
	}
	
	// 모든 결과 출력
	void showSungJuk() {
		System.out.println(this.computeTotal());
		System.out.println(this.computeAvg());
		System.out.println(this.computeGrade());
	}

}
